import { AppBasicInfo } from './project';
import { ServerBasicInfo } from './server';
import { CVEDetail } from './cve';

/**
 * LibraryListVo
 * 第三方库列表展示
 */
export interface LibraryListVo {
  hash: string;  // 类似UUID
  fileName: string; // 第三方库文件名
  grade: string; // 第三方库分数
  fileVersion: string; // 第三方库当前版本
  releaseDate: number; // 当前版本的发布时间
  latestVersion: string; // 最新版本
  latestReleaseDate: number; // 该库最新一版的发布时间
  versionsBehind: number; // 距离最新一版的间隔版本数量
  cveNums: number; // 存在的CVE漏洞数量
  cnnvdNums: number; // 存在的CNNVD漏洞数量
  applications: Array<AppBasicInfo>; // 使用该库的应用信息
  classCount: number; // 该库中存在的类的数量
  classesUsed: number; // 应用中使用的的该库的类的数量
}

/**
 * LibraryDetailVo
 * 第三方库详情信息
 */
export interface LibraryDetailVo {
  hash: string;
  classCount: string;
  classesUsed: string;
  fileName: string;
  fileVersion: string;
  grade: string;
  latestReleaseDate: number;
  releaseDate: number;
  latestVersion: string;
  versionsBehind: number;
  cveNums: number;
  lineOfCodes: number;
  suggestionLib: LibBasicInfo;
  applications: Array<AppBasicInfo>;
  servers: Array<ServerBasicInfo>;
  cve: Array<CVEDetail>;
}

/**
 * LibBasicInfo
 * 第三方库基本信息，常用于其他接口、类的子类
 */
export interface LibBasicInfo {
  hash: string;
  fileName: string;
  fileVersion: string;
  grade: string;
  releaseDate: number;
  versionsBehind: number;
}

export interface LibCount {
  totalNum: number;    // 新增
  usedNum: number; // 新增
}


export interface ThirdPartyLibVo {
  version: string;  // 版本
  hash: string;     // hash值
  groupName: string;
  artifactName: string;
  releaseDate: string;        // 发布时间
  latestReleaseDate: string;  // 最新发布时间
  latestVersion: string;      // 最新版本
  versionsBehind: number;     // 之前已发布的版本数目
  dateProfiled: string;       // 检测日期
  grade: string;              // 得分级别
  licenseId: string;          // licenseId在此对象中只有一个，若第三方库对应多个licenseId,则展示位多条记录
}









// licenseId 下拉框
 export interface LicenseIdListVo {
  status: number;
  length: number;
  data: Array<LicenseIdVo>;
}
export interface LicenseIdVo {
  name: string;
  value: string;
}